package com.sywb.chuangyebao.view;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

import com.alibaba.fastjson.JSON;
import com.sywb.chuangyebao.Constants;
import com.sywb.chuangyebao.R;
import com.sywb.chuangyebao.bean.Notice;
import com.sywb.chuangyebao.utils.HttpCallback;
import com.sywb.chuangyebao.utils.HttpUtils;

import org.bining.footstone.rxjava.rxbus.RxBus;
import org.bining.footstone.utils.TimeUtils;
import org.bining.footstone.utils.ToastUtils;

import butterknife.BindView;

/**
 * 公告详情
 */
public class UserNoticeDetailActivity extends ActionbarActivity {

    @BindView(R.id.tv_notice_title)
    TextView tvNoticeTitle;
    @BindView(R.id.tv_notice_time)
    TextView tvNoticeTime;
    @BindView(R.id.common_webview)
    WebView commonWebview;

    private String notice;

    @Override
    public int getLayoutId(Bundle bundle) {
        return R.layout.activity_user_notice_detail;
    }

    @Override
    public void initView(Bundle bundle) {
        super.initView(bundle);

        if (bundle != null) {
            notice = bundle.getString("p0");
        } else {
            notice = getIntent().getStringExtra("p0");
        }

        setTitle(R.string.notice_detail);
        initWebView();

        if (!TextUtils.isEmpty(notice)) {
            Notice noticeInfo = JSON.parseObject(notice, Notice.class);
            tvNoticeTitle.setText(noticeInfo.title);
            tvNoticeTime.setText(TimeUtils.ymdhm(noticeInfo.create_time * 1000L));

            if (TextUtils.isEmpty(noticeInfo.msg)) {
                commonWebview.setVisibility(View.GONE);
            } else {
                setHtml(noticeInfo.msg);
            }

            chattingNote(noticeInfo.chatting_id);
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putString("p0", notice);
        super.onSaveInstanceState(outState);
    }

    /**
     * 初始化WebView
     */
    @SuppressLint("SetJavaScriptEnabled")
    private void initWebView() {
        /**
         * setAllowFileAccess 启用或禁止WebView访问文件数据 setBlockNetworkImage 是否显示网络图像
         * setBuiltInZoomControls 设置是否支持缩放 setCacheMode 设置缓冲的模式
         * setDefaultFontSize 设置默认的字体大小 setDefaultTextEncodingName 设置在解码时使用的默认编码
         * setFixedFontFamily 设置固定使用的字体 setJavaSciptEnabled 设置是否支持Javascript
         * setLayoutAlgorithm 设置布局方式 setLightTouchEnabled 设置用鼠标激活被选项
         * setSupportZoom 设置是否支持变焦
         * */
        commonWebview.setVisibility(View.INVISIBLE);
        WebSettings settings = commonWebview.getSettings();
        settings.setJavaScriptEnabled(true);// 设置支持javascript脚本
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        // 1.NARROW_COLUMNS：可能的话使所有列的宽度不超过屏幕宽度；2.NORMAL：正常显示不做任何渲染；3.SINGLE_COLUMN：把所有内容放大webview等宽的一列中
        // settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);// 排版适应屏幕
        settings.setDisplayZoomControls(false);
        settings.setAllowFileAccess(true); // 启用或禁止WebView访问文件数据
        settings.setBuiltInZoomControls(false); //  隐藏缩放按钮
        settings.setSupportZoom(true); // 支持缩放
        // settings.setUseWideViewPort(true);// 可任意比例缩放
        settings.setLoadWithOverviewMode(true);//setUseWideViewPort方法设置webview推荐使用的窗口；设置webview加载的页面的模式
        settings.setGeolocationEnabled(true);// 启用地理定位
        settings.setDomStorageEnabled(true);
        settings.setSaveFormData(true);// 保存表单数据
        // settings.setSavePassword(true);
        // settings.setTextZoom(200);
        // settings.setMixedContentMode(1);
        // settings.setAcceptThirdPartyCookies();
        commonWebview.setWebChromeClient(new WebChromeClient());
        commonWebview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return false;
            }
        });

//        commonWebview.getSettings().setDefaultTextEncodingName("utf-8");
//        commonWebview.setBackgroundColor(0); // 设置背景色
//        commonWebview.getBackground().setAlpha(0); // 设置填充透明度 范围：0-255
//        commonWebview.loadDataWithBaseURL(null, "加载中。。", "text/html", "utf-8", null);
        commonWebview.setVisibility(View.VISIBLE); // 加载完之后进行设置显示，以免加载时初始化效果不好看
    }


    /**
     * 设置需展示的Html片段
     */
    private void setHtml(String protocol) {
        if (protocol != null) {
            commonWebview.getSettings().setDefaultTextEncodingName("utf-8");
            commonWebview.loadDataWithBaseURL(null, protocol, "text/html", "UTF-8", null);
        } else {
            ToastUtils.show(mActivity, "未获取到注册协议，请稍后重试");
        }
        hideProgress();
    }

    public void chattingNote(int chattingId) {
        HttpUtils.chattingRead(chattingId, new HttpCallback<Object>() {
            @Override
            public void onSuccess(Object o) {
                RxBus.get().post(Constants.USERCHAT, Constants.USERCHAT);
            }
        });
    }


}
